package com.steel.yfmall.cloud.assistant.api.stock;

import com.steel.yfmall.cloud.assistant.bean.ResponseZgMsgBean;
import com.steel.yfmall.cloud.assistant.bean.param.*;
import com.steel.yfmall.cloud.assistant.bean.param.zg.*;
import com.steel.yfmall.cloud.assistant.bean.result.APIResultAccountInfoBean;
import com.steel.yfmall.cloud.assistant.bean.result.APIResultByProductPriceBean;
import com.steel.yfmall.cloud.components.utils.base.APIListBean;
import com.steel.yfmall.cloud.components.utils.base.APIMsgBean;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.stereotype.Component;
import org.springframework.web.bind.annotation.RequestMapping;

import java.util.List;

@FeignClient(value = "YFMALL-ASSISTANT-SERVICE-PROVIDER")
@Component
public interface AssistantToZgServiceAPI {

    /**
     * 同步中冠价格
     *
     * @param apiParaBean 参数说明
     * @return com.steel.yfmall.cloud.assistant.biz.service.bean.ResultZgMsgBean<java.lang.Boolean>    返回类型
     * @Title: priceEffect
     * @Description: (这里用一句话描述这个方法的作用)
     * @author yuchaohua
     * @date 2020/12/8 14:37
     */
    @RequestMapping(value = "priceEffect")
    ResponseZgMsgBean<Boolean> priceEffect(APIPriceEffectBean apiParaBean);

    /**
     * @param [apiParaBean]
     * @return com.steel.yfmall.cloud.components.utils.base.APIListBean<com.steel.yfmall.cloud.assistant.biz.service.bean.result.APIResultAccountInfoBean>    返回类型
     * @Title: 查询账户信息
     * @Description: (这里用一句话描述这个方法的作用)
     * @date 2020/12/10 14:15
     * @author lang
     * @version 1.0
     */
    @RequestMapping(value = "getAccountInfo")
    APIListBean<APIResultAccountInfoBean> getAccountInfo(APIParamAccountInfoBean apiParaBean);

    /**
     * 同步企业收货地址给中冠
     *
     * @return com.steel.yfmall.cloud.components.utils.base.APIMsgBean<java.lang.Boolean>    返回类型
     * @Title: templateCompanyAddress
     * @Description: (这里用一句话描述这个方法的作用)
     * @Param apiParaBean 参数说明
     * @author yuchaohua
     * @date 2020/12/10 22:54
     */
    @RequestMapping(value = "templateCompanyAddress")
    APIMsgBean<Boolean> templateCompanyAddress(APIParamCompanyAddressBean apiParaBean);

    /**
     * 结算后抛送订单与装车单
     *
     * @param apiParaBean 订单号	orderNo
     *                    装车单号	invoiceNo
     */
    @RequestMapping(value = "doOrderSettlementInfo")
    void doOrderSettlementInfo(List<APIParamOrderAndInvoiceBean> apiParaBean);

    /**
     * 开立发票后向电商反馈
     *
     * @param zgOrderParamBean 订单号		orderNo
     *                         电商号		draftNo
     *                         申请开票单号	avNo
     * @return
     */
    @RequestMapping(value = "invoiceResult")
    ResponseZgMsgBean<String> invoiceResult(APIParamInvoiceResultBean apiParaBean);

    /**
     * 在订单建立之后中冠会通知电商，订单状态变更信息通知。
     *
     * @param apiParamAccountInfoBean 传送代号	Formid
     *                                电商订单编号	draftOrderNo
     *                                产销订单号	orderNo
     *                                产销订单状态	status
     * @return
     */
    @RequestMapping(value = "productionStatusChange")
    ResponseZgMsgBean<String> productionStatusChange(APIParamProductionStatusChangeBean apiParaBean);

    /**
     * 产销框架合同变动时，通知电商，这里修改电商的框架合同状态
     *
     * @param apiZgSO06Bean
     * @return 结果
     * @author jia chang bao
     */
    @RequestMapping(value = "updateFrameworkContractInfo")
    ResponseZgMsgBean<String> updateFrameworkContractInfo(APIZgSO06Bean apiZgSO06Bean);

    /**
     * 根据 订单号 和 客户编号 查询结算单信息
     *
     * @param apiParamOrderSettlementBean
     * @return 结果
     * @author jia chang bao
     */
    @RequestMapping(value = "getOrderSettlement")
    APIListBean<APIParamOrderSettlementBean> getOrderSettlement(APIParamOrderSettlementBean apiParamOrderSettlementBean);

    /**
     * 中冠订单变更
     * @Title: productionOrderChange
     * @Description: (这里用一句话描述这个方法的作用)
     * @Param apiParaBean 参数说明
     * @return com.steel.yfmall.cloud.assistant.bean.ResponseZgMsgBean<java.lang.String>    返回类型
     * @author yuchaohua
     * @date 2021/1/15 10:07
     */
    @RequestMapping(value = "productionOrderChange")
    ResponseZgMsgBean<String> productionOrderChange(APIZgChangerOrderBean apiParaBean);

    /**
     * 查询副产品价格
     * @Title: getByProductPriceBeanByPara
     * @Description: (这里用一句话描述这个方法的作用)
     * @Param apiParaBean 参数说明
     * @return com.steel.yfmall.cloud.components.utils.base.APIMsgBean<com.steel.yfmall.cloud.assistant.bean.result.APIResultByProductPriceBean>    返回类型
     * @author yuchaohua
     * @date 2021/2/23 12:25
     */
    @RequestMapping(value = "getByProductPriceBeanByPara")
    APIMsgBean<APIResultByProductPriceBean> getByProductPriceBeanByPara(APIParamByProductPriceBean apiParaBean);

    /**
     * 接收中冠终到地点数据
     * @param apiParamEndCodeBean
     * @return 结果
     * @author jia chang bao
     */
    @RequestMapping(value = "receiveZgEndCode")
    APIMsgBean<Boolean> receiveZgEndCode(APIParamEndCodeBean apiParamEndCodeBean);

}
